package cn.tedu.store.controller;

import cn.tedu.store.entity.User;
import cn.tedu.store.service.IUserService;
import cn.tedu.store.service.ex.*;
import cn.tedu.store.util.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

//localhost:8080/users/reg?username=tom&password=123

/**
 * 处理用户模块请求的控制器类
 */
//@Controller注解，SpringBoot项目环境加载时，
// 会自动创建该类的一个对象，交给Spring框架容器管理。
//@Controller
@RestController //@Controller+@ResponseBody
//@RequestMaaping写在类上，表示处理以该值(/users)开头的所有请求
@RequestMapping("/users")
public class UserController extends BaseController{
    @Autowired //从Spring框架容器中，取出一个IUserService实现类的对象，赋给下面的成员属性
    private IUserService userService;

    //@RequestMapping写在方法，表示处理该具体url(/users/reg)的请求
    @RequestMapping("/reg")
    //@ResponseBody注解把方法返回值作为响应体的内容，在响应之前
    //会自动将方法返回值转换成json格式
    //@ResponseBody
    public JsonResult<Void> reg(User user) {
        userService.reg(user);
        return new JsonResult<>(OK);
    }

    /**
     * 处理登录请求
     *
     * @param username 用户名
     * @param password 密码
     * @return JsonResult对象
     */
    @RequestMapping("/login")
    JsonResult<User> login(String username, String password, HttpSession session) {
        User data = userService.login(username, password);
        //保存登录用户信息，供后续业务使用
        session.setAttribute("uid", data.getUid());
        session.setAttribute("username", data.getUsername());
        return new JsonResult<>(OK,data);
    }


}
